home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 1
/
Gekikoh Dennoh Club Vol. 1 (Japan).7z
/
Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin
/
tools
/
xb
/
bfd
/
execbfd.doc
< prev
Wrap
Text File
|
1996-12-08
|
2KB
|
66 lines
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
外部関数への差分 exec.bfd
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
EXEC.FNC と GRAPH.FNC に当てる差分です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Oh!X '94年10月号に掲載されている EXEC.FNC はこの差分を当てていないと、
ぺけ-BASIC上で誤動作することがあります。
理由は、「X-BASICが外部関数を呼び出す時、たまたまレジスタd0-d7
の上位ワードがクリアされている、仕様でない仕様」を使った EXEC.FNC 対応
のプログラムがいくつかある ( SHOCK2.BAS, MCM.BAS ) というものです。ま、
ということで、EXEC.FNC が悪い訳ではないですが、かぶって貰うことにしまし
た。
ソースの変更点は次の通りです。
---- ---- ---- ---- ---- ---- ---- ---- ----
*** old/exec.s Mon Aug 15 18:53:44 1994
--- exec.s Wed Jun 07 18:55:58 1995
***************
*** 138,143 ****
--- 138,151 ----
move.w d4,-4*9-2(a5)
exec_exec:
lea.l system_var,a3 システム変数のアドレス
+ moveq #0,d0
+ moveq #0,d1
+ moveq #0,d2
+ moveq #0,d3
+ moveq #0,d4
+ moveq #0,d5
+ moveq #0,d6
+ moveq #0,d7
jsr (a4)
lea.l skip_off(pc),a0
move.l d1,6(a0) d1の内容を戻り値とする
---- ---- ---- ---- ---- ---- ---- ---- ----
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GRAPH.FNC は、X-BASIC 付属の外部関数の中で飛び抜けて大きい存在ですが、
実はその内 32 KB は paint() 用のバッファで、ただ 0 でクリアされている
だけです。
そこでそのバッファを .bss セクションに持っていくだけで、GRAPH.FNC は
3 KB 弱のサイズになります。そのための差分です。
ソースの変更点は記すまでもないですね。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━